package ext

import business.Moveable
import enums.Direction
import model.Bullet
import model.IView
import model.Tank

fun IView.checkCollision(view02:IView ): Boolean {
    var view01=this
    var x01=view01.x
    var y01=view01.y
    var width01=view01.width
    var height01=view01.height
    var x02=view02.x
    var y02=view02.y
    var width02=view02.width
    var height02=view02.height

    var speed01=8
    var speed02=8

    if(view01 is Bullet){
        if(view01.gradle==2){
            speed01=0
        }
    }
    if(view02 is Bullet){
        if(view02.gradle==2){
            speed02=0
        }
    }

    /** 防止刚出生的坦克与其他坦克重叠导致不能动*/
    if((view01 is Tank)and (view02 is Tank)){
        if((Math.abs(x01-x02)<view01.width-8) and (Math.abs(y01-y02)<view01.height-8)){
            return false
        }
    }

    /** 计算下一步的坐标*/
    if(view01 is Moveable){
        when(view01.currentDirection){
            Direction.UP->y01-=speed01
            Direction.DOWN->y01+=speed01
            Direction.LEFT->x01-=speed01
            Direction.RIGHT->x01+=speed01
        }
    }
    if(view02 is Moveable){

        when(view02.currentDirection){
            Direction.UP->y02-=speed02
            Direction.DOWN->y02+=speed02
            Direction.LEFT->x02-=speed02
            Direction.RIGHT->x02+=speed02
        }
    }



    //两个物体的x,y,w,h的比较
    return when {
        y02 + height02 <= y01 -> //如果 阻挡物 在运动物的上方时 ，不碰撞
            false
        y01 + height01 <= y02 -> //如果 阻挡物 在运动物的下方时 ，不碰撞
            false
        x02 + width02 <= x01 -> //如果 阻挡物 在运动物的左方时 ，不碰撞
            false
        else -> x01 + width01 > x02
    }
}